R语言文本分词之——Rwordseg包
Rwordseg是一个R环境下的中文分词工具,使用 rJava 调用 Java 分词工具 Ansj,所以需要安装并且配置java环境(也就是jdk)。Ansj 也是一个开源的 Java 中文分词工具,基于中科院的 ictclas 中文分词算法, 采用隐马尔科夫模型(Hidden Markov Model, HMM)。这个包的作者孙健重写了一个Java版本, 并且全部开源,使得 Ansi 可用于人名识别、地名识别、组织机构名识别、多级词性标注、 关键词提取、指纹提取等领域,支持行业词典、 用户自定义词典。So,这个包很强大。
安装Rwordseg包
这个包的安装方法分两步如下:
1、安装rjava包
去java官网下载jdk,安装;
新建系统变量JAVA_HOME;变量值为jdk的路径比如路径:D:\Program Files\Java\jdk1.7.0_79;
在PATH变量后加入:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;末尾最好有分号,防止下次加时漏掉分号,养成好习惯;
在命令行窗口输入javac,会出现相关目录表示配置成功。
R命令install.packages('rjava'),应该就能安装成功了
2、安装Rwordseg包
install.packages('Rwordseg')
这个包不好下载,上面这句命令如果不行,可以把它下载到本地,放到R安装目录(比如:D:\Program Files\R\library)下面,反正就是library文件夹下面,然后加载即可。
此处下载
分词用法
library(rjava) #导入包
library(Rwordseg)
test <- '革命尚未成功,同志仍需努力!'
segmentCN(test)
[1] "革命" "尚未" "成功" "同志" "仍" "需" "努力"
加入自定义词语
比如,把“仍需”这两个字分成一个词,而不是两个字,可以加入自定义词语:
> insertWords('仍需')
> segmentCN(test)
[1] "革命" "尚未" "成功" "同志" "仍需" "努力"
那么,如果下次又想把“仍需”分成两个词呢,可以把加入词库的词删除,以下命令:
> deleteWords('仍需')
> segmentCN(test)
[1] "革命" "尚未" "成功" "同志" "仍" "需" "努力"
可以看出从词库中把“仍需”删除后,“仍需”又被当作两个词了。
安装词典
(1)、installDict(dictpath, dictname,dicttype = c("text", "scel"), load = TRUE)
dictname 是自定义词典的名称(英文);
dicttype 默认是txt;
load 表示安装后是否自动加载到内存,默认是TRUE;
(2)、listDict() 显示安装的词典;
uninstallDict() 删除安装的词典;
(3)、如果这是在内存中临时添加或删除词汇,可以使用insertWord()和deleteWord()函数;
下面对朱自清的《匆匆》画词云进行分词处理
《匆匆》原文
path <- 'C:\\Users\\26015\\Desktop\\匆匆.txt' #路径在桌面
dat <- readLines(path)
2、分词
library(Rwordseg)
txt <- segmentCN(dat)
insertWords('朱自清')
txt <- segmentCN(dat)
点击【阅读原文】,更多精彩!